
package fmu.pi.model.dao.old;


import fmu.pi.model.bean.*; 
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GrupoDao extends Dao
{
    public Integer insert(Entidade entidade)
    {
        PreparedStatement statement = null; 
        Grupo grupo = (Grupo) entidade; 
        Integer result = 0; 
        final String QUERY = "insert into Grupo(nome)values(?);";
        
        try
        {
            statement = getConnection().prepareStatement(QUERY); 
            statement.setString(1, grupo.getNome());  
            result = statement.executeUpdate(); 
        }
        catch(SQLException exception)
        {
            System.err.println("Erro ao inserir Grupo no banco de dados"); 
            exception.printStackTrace(); 
        }
        finally
        {
            try
            {
                if(statement != null)
                    statement.close(); 
            }
            catch(SQLException exception)
            {
                exception.printStackTrace(); 
            }
        }
        
        return result; 
    }
    
    public Integer update(Entidade entidade)
    {
        PreparedStatement statement = null; 
        Grupo grupo = (Grupo) entidade; 
        Integer result = 0;
        final String QUERY = "update grupo set nome = ? "
                + "where idgrupo = " + grupo.getIdGrupo(); 
        
        try
        {
            statement =  getConnection().prepareStatement(QUERY);
            statement.setString(1, grupo.getNome()); 
            result = statement.executeUpdate(); 
        }
        catch(SQLException exception)
        {
            System.err.println("Erro ao atualizar banco de dados!"); 
            exception.printStackTrace(); 
        }
        finally
        {
            try
            {
                if(statement != null)
                    statement.close(); 
            }
            catch(SQLException exception)
            {
                exception.printStackTrace(); 
            }
        }
        
        return result; 
    }
    
    public Integer delete(Entidade entidade)
    {
        PreparedStatement statement = null; 
        Grupo grupo = (Grupo) entidade; 
        Integer result = 0;
        final String query = "delete from Grupo where idgrupo = " 
                + grupo.getIdGrupo();
        try
        {
            statement =  getConnection().prepareStatement(query);
            statement.executeUpdate();
        }
        catch(SQLException exception)
        {
            System.err.println("Erro ao apagar grupo do banco de dados"); 
            exception.printStackTrace(); 
        }
        finally
        {
            try
            {
                if(statement != null)
                    statement.close(); 
            }
            catch(SQLException exception)
            {
                exception.printStackTrace(); 
            }
        }
        
        return result; 
    }
    
    public List<Entidade> read()
    {
        PreparedStatement statement = null; 
        ResultSet resultSet = null; 
        List<Entidade> grupos = new ArrayList<Entidade>(); 
        final String QUERY = "select * from grupo order by nome;"; 
        
        try
        {
            statement =  getConnection().prepareStatement(QUERY);
            resultSet = statement.executeQuery(); 
            
            while(resultSet.next())
            {
                Grupo grupo = new Grupo(); 
                grupo.setIdGrupo(resultSet.getInt("idgrupo")); 
                grupo.setNome(resultSet.getString("nome"));
                grupos.add(grupo); 
            } 
        }
        catch(SQLException exception)
        {
            System.err.println("Erro ao recuperar Grupos do banco!"); 
            exception.printStackTrace(); 
        }
        finally
        {
            try
            {
                if(statement != null){
                    statement.close();
                    resultSet.close();
                }
            }
            catch(SQLException exception)
            {
                exception.printStackTrace(); 
            }
        }
        
        return grupos; 
    }
    
}
